/*
 * 文件名：ParkwellCarOutService.java	 
 * 时     间：下午7:33:26
 * 作     者：Administrator       
 * 版     权： 2012-2022 湖南智软网络科技, 公司保留所有权利.
 * 联     系：http://www.073586.com/
 */
package com.local.service.face;

import java.util.Date;

import com.local.entity.vo.ParkwellPayBillVo;
import com.local.model.AdminPayBill;
import com.local.model.CarParkOut;
import com.local.model.LocalEquipment;
import com.qianhai.common.exception.BaseException;

/**
 * 类描述:这里是类描述
 * 
 * @ClassName: ParkwellCarOutService
 * @author Administrator
 * @date 2015年4月12日 下午7:33:26
 */
public interface ParkwellCarOutService
{
	
	/**
	 * 
	 * 方法描述： 出场手动开闸时无进场纪录，则更新出场状态、纪录强制开闸信息、推送页面，更新到云.
	 * @Title: manualOpenCarOut 
	 * @param @param carOutId
	 * @param @return
	 * @param @throws BaseException
	 * @return Integer
	 * @user lyf
	 * 2016年1月20日
	 * @throws
	 */
	public AdminPayBill manualOpenCarOut(ParkwellPayBillVo parkwellPayBillVo) throws BaseException;
	
	/**
	 * 
	 * 方法描述：出场流程
	 * 
	 * @Title: carOut
	 * @param @param carNo
	 * @param @param parkUuid
	 * @param @param time
	 * @param @param carTypeUuid
	 * @param @return
	 * @return Boolean
	 * @user Administrator 2015年4月13日
	 * @throws
	 */
	public ParkwellPayBillVo carOut(CarParkOut carParkOut,ParkwellPayBillVo parkwellPayBillVo) throws BaseException;
	
	/**
	 * 
	 * 方法描述：支付流程
	 * 
	 * @Title: createPayBill
	 * @param @param carNo
	 * @param @param parkUuid
	 * @param @param happenTime
	 * @param @param carTypeUuid
	 * @param @param payType
	 * @param @param parkInUuid
	 * @return void
	 * @user Administrator 2015年4月13日
	 * @throws
	 */
	public Double createPayBill(String carNo, Date inTime, Date happenTime,
			String carTypeUuid, String payType, String parkInUuid,
			Boolean isMember,Double priceDifference);
	
	
	/**
	 * 
	 * 方法描述： 通过虚拟计费信息添加流水
	 * @Title: createPayBill 
	 * @param @param payBillVo
	 * @param @return
	 * @param @throws BaseException
	 * @return Integer
	 * @user lyf
	 * 2015年11月8日
	 * @throws
	 */
	public Integer createPayBill(ParkwellPayBillVo payBillVo,CarParkOut carParkOut) throws BaseException;
	
	/**
	 * 
	 * 方法描述：出场后，删除流水副本记录
	 * @Title: deletePayBillCopy 
	 * @param @param payBillVo
	 * @param @return
	 * @param @throws BaseException
	 * @return Integer
	 * @user Administrator
	 * 2016年4月5日
	 * @throws
	 */
	public Integer deletePayBillCopy(ParkwellPayBillVo payBillVo) throws BaseException;
	
	/**
	 * 
	 * 方法描述： 通过设备编号获取
	 * 
	 * @Title: queryEquipMentByCameraNo
	 * @param @param cameNo
	 * @param @return
	 * @return LocalEquipment
	 * @user Administrator 2015年10月1日
	 * @throws
	 */
	public LocalEquipment queryEquipMentByCameraNo(String cameNo);
	
	/**
	 * 
	 * 方法描述：  计费
	 * @Title: calculatePrice 
	 * @param @param inTime
	 * @param @param happenTime
	 * @param @param carTypeUuid
	 * @param @return
	 * @return Double
	 * @user lyf
	 * 2015年10月15日
	 * @throws
	 */
	public Double queryCalculatePrice(Date inTime, Date happenTime,
			String carTypeUuid,ParkwellPayBillVo parkwellPayBillVo);
	
	/**
	 *  
	 * 方法描述：     出场时生成虚拟订单,2016-1-17添加透传字段，保证系统报错也有数据显示 by:lyf
	 * @Title: generateVirtualBill 
	 * @param @param carParkOut
	 * @param @return
	 * @param @throws BaseException
	 * @return ParkwellPayBillVo
	 * @user lyf
	 * 2015年11月6日
	 * @throws
	 */
	public  ParkwellPayBillVo  queryGenerateVirtualBill(CarParkOut carParkOut,ParkwellPayBillVo parkwellPayBillVo) throws BaseException;
	
	/**
	 * 
	 * 方法描述： 更新车辆出场后信息，包括推送前端车位数状态、更新（进/出）已经出厂，推送到云等，但不处理流水。此方法供移动支付后使用
	 * @Title: updataForCarOut 
	 * @param @param carOutUUid
	 * @param @param carInUUid
	 * @param @return
	 * @param @throws BaseException
	 * @return Integer
	 * @user lyf
	 * 2015年11月20日
	 * @throws
	 */
	public Integer  updataForCarOut(String carOutUUid,String carInUUid) throws BaseException;
	
	/**
	 * 
	 * 方法描述： 拷贝进场出场数据到副本表
	 * @Title: findSysncToCloud 
	 * @param @param carOutUUid
	 * @param @param carInUUid
	 * @param @return
	 * @param @throws BaseException
	 * @return Integer
	 * @user lyf
	 * 2015年11月20日
	 * @throws
	 */
	public Integer copyToOhterTable(String carOutUUid,String carInUUid)throws BaseException;
	
	
	/**
	 * 
	 * 方法描述：返回抵用劵与代金劵
	 * @Title: returnCashOrVouchers 
	 * @param @param parkwellPayBillVo
	 * @param @param carInUuid
	 * @return void
	 * @user Administrator
	 * 2015年12月28日
	 * @throws
	 */
	public void returnCashOrVouchers(ParkwellPayBillVo parkwellPayBillVo,String carInUuid);
	
	/**
	 * 
	 * 方法描述：  相机识别后自动开闸处理
	 * @Title: carOutNew 
	 * @param @param parkwellPayBillVo
	 * @param @throws BaseException
	 * @return void
	 * @user lyf
	 * 2016年3月25日
	 * @throws
	 */
	public void carOutNew(ParkwellPayBillVo parkwellPayBillVo,CarParkOut carParkOut) throws BaseException;
	
	/**
	 * 
	 * 方法描述：
	 * @Title: uploadPlatform 
	 * @param @param parkwellPayBillVo
	 * @param @param carParkOut
	 * @param @param logService
	 * @return void
	 * @user Administrator
	 * 2016年3月26日
	 * @throws
	 */
	public void uploadPlatform(ParkwellPayBillVo parkwellPayBillVo,CarParkOut carParkOut,LogService logService);
}
